home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / amigae.june.archive / 000083_crash!kirk.safb.af.mil!BWILLS_Mon, 14 Jun 93 09:51:09 PST.msg < prev    next >
Text File  |  1993-08-31  |  3KB  |  58 lines

  1. Received: by bkhouse.cts.com (V1.16/Amiga)
  2.     id AA00000; Mon, 14 Jun 93 09:51:09 PST
  3. Received: from kirk.safb.af.mil by crash.cts.com with smtp
  4.     (Smail3.1.28.1 #15) id m0o5Fru-0000R4C; Mon, 14 Jun 93 07:50 PDT
  5. Message-Id: <m0o5Fru-0000R4C@crash.cts.com>
  6. Date: 14 Jun 93 09:47:00 CST
  7. From: "Barry D. Wills" <BWILLS@kirk.safb.af.mil>
  8. To: "amigae" <amigae@bkhouse.cts.com>
  9. Subject: Reply to reply to various things (or, pointer to pointer to string?)
  10.  
  11. Hi, Son Le.  On 13 Jun you wrote:
  12.  
  13. >Firstly, I'm not sure if the SIZEOF drawinfo=NONE!! would affect it but I
  14. >modified mine *grin* and if you want it, I'm email it. The problem I think
  15. >is that you haven't DEFined pens to be (PTR) ARRAY OF *INT*. I tried your
  16. >example and it worked fine.
  17.  
  18. Son Le, the arpbase.m module also had one of these SIZEOF...NONE!! objects.
  19. If you check the asm source it might shed some light.
  20.  
  21. >I understand {var} and ^var for variables containing numbers, but if the
  22. >variable contained a string, passing it as {var}, you can't access it as ^var
  23.  
  24. This is true.  E treats complex vars (STRING, LIST, OBJECT) as pointers.  So
  25. since your STRING variable is already a pointer to a string you don't want to
  26. say func(^myString).  That's like saying WriteF('\s', ^myString).  This may be
  27. somewhat arcane since WriteF() and the other string functions *expect* to get a
  28. pointer to a string (likewise for list functions.)
  29.  
  30. >but just var (if I remember correctly). However, you can't modify the var
  31.  
  32. Also true.  You can successfully use string/list functions on the parameter,
  33. but if you want to change the address of the string variable you must pass the
  34. variable by reference.  Given:
  35. PROC newString (str, size)
  36.   ^str := String (size)
  37. ENDPROC
  38. ...
  39.   DEF s = NIL
  40.   newString ({s}, 5)  /* s now points to a valid dyn-alloc'ed string. */
  41.   newString (s, 5)    /* s is not changed!!!  newString() attempts to */
  42.                       /* dereference NIL (^NIL).  Not sure what this'll do. */
  43.                       /* If it's not initialized to NIL, only God knows     */
  44.                       /* where you'll be storing the address for that new   */
  45.                       /* string!!!                                          */
  46.  
  47. >about Lists and Linked lists? How do you access them and how do you change
  48. >them permanently? And how about when var=New()?
  49.  
  50. Same deal.
  51.  
  52. >^var:='Hello'? Good question! I forgot! Can you WriteF('\s',^var)? There's
  53.  
  54. Sure.  Just make sure that the location pointed to by var contains the address
  55. of a valid E string :)  Kinda like:  LONG-> PTR TO STR-> 'blabla'.  If that
  56. makes any sense.
  57.  
  58. Later.  -- Barry